问题很简单,如标题所述:以下两个表达式之间的区别是什么?
$(...) `...`
例如,有两个变量test1
和test2
不同?
test1=$(ls) test2=`ls`
unwind.. 9
结果是一样的,但更新的$()语法更清晰,更容易阅读.当试图筑巢时至少加倍.使用旧语法嵌套并不容易,但使用新方法可以正常工作.
相比:
$ echo $(ls $(pwd))
与:
$ echo `ls \`pwd\``
你需要逃避嵌入的反引号,所以它的类型和读取都要复杂得多.
根据这个页面,它们如何处理嵌入式双反斜杠至少有一个细微差别.
结果是一样的,但更新的$()语法更清晰,更容易阅读.当试图筑巢时至少加倍.使用旧语法嵌套并不容易,但使用新方法可以正常工作.
相比:
$ echo $(ls $(pwd))
与:
$ echo `ls \`pwd\``
你需要逃避嵌入的反引号,所以它的类型和读取都要复杂得多.
根据这个页面,它们如何处理嵌入式双反斜杠至少有一个细微差别.
你可能想读man bash
:
当使用旧式反引号形式的替换时,反斜杠保留其字面含义,除非后跟$,`或者.第一个不带反斜杠的反引号会终止命令替换.使用$(命令)表单时,括号之间的所有字符组成命令; 没有人特别对待.
这是在联机帮助页的"命令替换"部分下.
使用```是历史语法,POSIX采用了现在标准的`$(...)语法.见2.6.3节